package com.xiaoKe.zhonghzu.global.tool;

import android.content.Context;
import android.os.Build;
import android.text.TextUtils;
import android.widget.TextView;

import androidx.annotation.RequiresApi;
import androidx.core.content.ContextCompat;

import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.view.TimePickerView;
import com.xiaoKe.zhonghzu.R;
import com.xiaoKe.zhonghzu.global.base.BaseApplication;
import com.xiaoKe.zhonghzu.ui.onClick.OnClickListenerPositionObject;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;

/**
 * @ProjectName : app
 * @Author : Shijingna
 * @Time : 2022/9/26 10:33 上午
 * @Description : 文件描述
 */
public class DateUtils {
    /**
     * 时间长度处理
     **/
    public static String getUpdateTime(String str,int star,int end) {
        return TextUtils.isEmpty(str) || str.length() < 16 ? "" : str.replace("T", " ").substring(star, end);
    }
    public static String getUpdateTime1(String str) {
        return TextUtils.isEmpty(str) || str.length() < 16 ? "请先读取" : str.replace("T", " ").substring(5, 16);
    }

    public static String getUpdateTime3(String str) {
        return TextUtils.isEmpty(str) || str.length() < 16 ? "--" : str.replace("T", " ").substring(5, 16);
    }
    /**
     * 判断空
     */
    public static String getContent(String content) {
        return TextUtils.isEmpty(content) ? "--" : content;
    }

    public static String getContent(Object content) {
        return null == content ? "--" : content.toString();
    }

    /**
     * 截掉两位
     */
    public static String getSubstring(String content) {
        return TextUtils.isEmpty(content) ? "--" : content.substring(2);
    }
    /**
     * localDataTime转时间戳
     */
    @RequiresApi(api = Build.VERSION_CODES.O)
    public static Long localTimeToSecond(LocalDateTime localDateTime) {
        return localDateTime.toEpochSecond(ZoneOffset.of("+8"));
    }

    /**
     * 判断空
     */
    public static String getTime(String content) {
        return !TextUtils.isEmpty(content) ? content.replace("T", " ") : "--";
    }

    /**
     * 颜色转换
     */
    public static int getColor(int Color) {
        return ContextCompat.getColor(BaseApplication.instance, Color);
    }

    /**
     * @Description: 字符串转LocalDateTime
     */
    public static LocalDateTime stringToLocalDateTime(String dateString) {
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime localDateTime = LocalDateTime.parse(dateString, df);
        return localDateTime;
    }

    /**
     * @Description: 字符串转LocalDate
     */
    public static LocalDate stringToLocalDate(String dateString) {
        if (null == dateString) {
            return LocalDate.now();
        }
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate localDate = LocalDate.parse(dateString, df);
        return localDate;
    }

    /**
     * LocalDateTime 转字符串
     */
    public static String localTimeToString(LocalDateTime localDateTime) {
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        return df.format(localDateTime);
    }

    public static String weightKg(double object) {
        return object >= 1000 ? new BigDecimal(object / 1000).setScale(2, BigDecimal.ROUND_HALF_UP) + "kg" : object + "g";
    }
    /**
     * 比较版本 适用于（1.3.1 ）两个小数点类型
     *
     * @param v1
     * @param v2
     * @return v1 > v2
     */
    public static boolean compareVersionMax(String v1, String v2) {
        int principalV1 = 0;
        int subV1 = 0;
        int amendmentV1 = 0;
        String[] v1s = v1.split("\\.");
        if (v1s.length > 0) {
            principalV1 = Integer.valueOf(v1s[0]);
        }
        if (v1s.length > 1) {
            subV1 = Integer.valueOf(v1s[1]);
        }
        if (v1s.length > 2) {
            amendmentV1 = Integer.valueOf(v1s[2]);
        }
        int principalV2 = 0;
        int subV2 = 0;
        int amendmentV2 = 0;
        String[] v2s = v2.split("\\.");
        if (v2s.length > 0) {
            principalV2 = Integer.valueOf(v2s[0]);
        }
        if (v2s.length > 1) {
            subV2 = Integer.valueOf(v2s[1]);
        }
        if (v2s.length > 2) {
            amendmentV2 = Integer.valueOf(v2s[2]);
        }
        if (principalV1 > principalV2) {
            return true;
        }
        if (principalV1 == principalV2) {
            if (subV1 > subV2 || (subV1 == subV2 && amendmentV1 > amendmentV2)) {
                return true;
            }
        }
        return false;
    }

    /**
     * 比较版本 适用于（1.3.1 ）两个小数点类型
     *
     * @param v1
     * @param v2
     * @return v1 >= v2
     */
    public static boolean compareVersion(String v1, String v2) {

        if (v1.equals(v2)) {
            return true;
        }
       return  compareVersionMax(v1,v2);
    }

    /**
     * 比较版本 适用于（1.3.1 ）两个小数点类型
     *
     * @param v1
     * @param v2
     * @return v1 < v2
     */
    public static boolean compareVersionMin(String v1, String v2) {
        return compareVersionMax(v2, v1);
    }






    /**
     * 比较第一个日期是否大于第二个日期
     *
     * @param firstDate  第一个日期
     * @param secondDate 第二个日期
     * @return true-大于;false-不大于
     */
    public static boolean localDateIsBefore(LocalDate firstDate, LocalDate secondDate) {
        return firstDate.isBefore(secondDate);
    }

    /**
     * 比较第一个日期是否小于第二个日期
     *
     * @param firstDate  第一个日期
     * @param secondDate 第二个日期
     * @return true-小于;false-大于
     */
    public static boolean localDateIsAfter(LocalDate firstDate, LocalDate secondDate) {
        return firstDate.isAfter(secondDate);
    }

    /**
     * 比较两个日期是否相等
     *
     * @param firstDate  第一个日期
     * @param secondDate 第二个日期
     * @return true-相等;false-不相等
     */
    public static boolean localDateIsEqual(LocalDate firstDate, LocalDate secondDate) {
        return firstDate.isEqual(secondDate);
    }

    /**
     * @param
     * @return //单位分钟的
     */

    public static String getMinuteToString(long time) {
        long day = (time / (60 * 24));
        long hour = (time % (24 * 60)) / 60;
        long min = time % (24 * 60 * 60);
        if (day > 0) {
            return day + "天" + hour + "时" + min + "分";
        } else if (hour > 0) {
            return hour + "时" + min + "分";
        } else {
            return min + "分";
            //    智慧养殖数值化养殖方案
        }
    }

    // 秒的单位
    public static String TimeSs(long time) {
        long hour = time / 3600;
        long min = time % 3600 / 60;
        if (hour > 0) {
            return hour + "h" + (min + 1);
        } else {
            return (min + 1) + "min";

            //    智慧养殖数值化养殖方案
        }
    }

    public static String getTimeH(int data) {
        int hhh = data / 60;
        int mmm = data % 60;
        if (hhh > 0) {
            return hhh + "h" + mmm;
        } else {
            return mmm + "min";
        }

    }


}
